class Solution {
public:
    int numDistinct(string S, string T) {
        // write code here
        int m=S.size();
        int n=T.size();
      vector<int> f(n+1,0);
       
            f[0]=1;
        
        for(int i=1;i<=m;i++)
        {
            for(int j=n;j>0;j--)
            {
                if(S[i-1]==T[j-1])
                {
                    f[j]=f[j-1]+f[j];
                }
               
            }
        }
        return f[n];
    }
};
